APP_LIB_DIR := ../

OSA_INC= ../inc
XDC_INC= /opt/dvevm_1_20/xdc_2_94/packages
CMEM_INC =$(CMEM)/include

INCLUDE = \
	-I$(LINUXKERNEL_INSTALL_DIR)/include \
	-I$(OSA_INC) \
	-I$(XDC_INC) \
	-I$(CMEM_INC)

CFLAGS = -Wall -g -O3

TARGET = osa.a

all: $(TARGET) install

OBJS = \
	osa.o \
	osa_buf.o \
	osa_file.o \
	osa_flg.o \
	osa_ipc.o \
	osa_mbx.o \
	osa_msgq.o \
	osa_mutex.o \
	osa_prf.o \
	osa_que.o \
	osa_sem.o \
	osa_thr.o \
	osa_cmem.o \
	osa_tsk.o

$(TARGET): $(OBJS)
	$(AR)  -rcs  $@ $^

osa.o : osa.c $(OSA_INC)/osa.h $(OSA_INC)/osa_thr.h $(OSA_INC)/osa_mutex.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_buf.o : osa_buf.c $(OSA_INC)/osa_buf.h $(OSA_INC)/osa_que.h $(OSA_INC)/osa_mutex.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_file.o : osa_file.c $(OSA_INC)/osa_file.h $(OSA_INC)/osa.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_flg.o : osa_flg.c $(OSA_INC)/osa_flg.h $(OSA_INC)/osa.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_ipc.o : osa_ipc.c $(OSA_INC)/osa_ipc.h $(OSA_INC)/osa.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_mbx.o : osa_mbx.c $(OSA_INC)/osa_mbx.h $(OSA_INC)/osa_msgq.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_msgq.o : osa_msgq.c $(OSA_INC)/osa_msgq.h $(OSA_INC)/osa.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_mutex.o : osa_mutex.c $(OSA_INC)/osa_mutex.h $(OSA_INC)/osa.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_prf.o : osa_prf.c $(OSA_INC)/osa_prf.h $(OSA_INC)/osa.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_que.o : osa_que.c $(OSA_INC)/osa_que.h $(OSA_INC)/osa.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_sem.o : osa_sem.c $(OSA_INC)/osa_sem.h $(OSA_INC)/osa.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_thr.o : osa_thr.c $(OSA_INC)/osa_thr.h $(OSA_INC)/osa.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_cmem.o : osa_cmem.c $(OSA_INC)/osa_cmem.h $(OSA_INC)/osa.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

osa_tsk.o : osa_tsk.c $(OSA_INC)/osa_tsk.h $(OSA_INC)/osa_mbx.h
	$(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $<

# clean rule; must be a :: rule because CE's xdccfg.mak defines clean::, too
clean::
	rm -rf $(TARGET) *.o
	rm -rf $(APP_LIB_DIR)$(TARGET)

install::
	cp -f $(TARGET) $(APP_LIB_DIR)